// import com.alibaba.druid.sql.ast.*;
// import com.alibaba.druid.sql.ast.expr.SQLIdentifierExpr;
// import com.alibaba.druid.sql.ast.expr.SQLNumericLiteralExpr;
// import com.alibaba.druid.sql.ast.statement.SQLExternalRecordFormat;
// import com.alibaba.druid.sql.ast.statement.SQLSelect;
// import com.alibaba.druid.sql.ast.statement.SQLTableElement;
// import com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleLobStorageClause;
// import com.alibaba.druid.sql.dialect.oracle.ast.clause.OracleStorageClause;
// import com.alibaba.druid.sql.dialect.oracle.ast.stmt.*;
// import com.alibaba.druid.sql.dialect.oracle.ast.stmt.OracleCreateTableStatement.DeferredSegmentCreation;
// import com.alibaba.druid.sql.parser.Lexer;
// import com.alibaba.druid.sql.parser.ParserException;
// import com.alibaba.druid.sql.parser.SQLCreateTableParser;
// import com.alibaba.druid.sql.parser.Token;
// import com.alibaba.druid.util.FnvHash;
#pragma once
#include "../../../parser/SQLCreateTableParser.h"

class OracleCreateTableParser : virtual public SQLCreateTableParser
{
public:
  OracleCreateTableParser(Lexer_ptr lexer);

  OracleCreateTableParser(string_ptr sql);

  OracleCreateTableStatement_ptr newCreateStatement();

  OracleCreateTableStatement_ptr parseCreateTable(BOOL_ptr acceptCreate);
  void parseOrganization(OracleCreateTableStatement_ptr stmt);
  SQLPartitionByList_ptr partitionByList();
  SQLTableElement_ptr parseCreateTableSupplementalLogingProps();
  // @Override
  OracleExprParser_ptr getExprParser();
};
